
import java.util.HashSet;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2023-03-05
 * Time: 19:41
 */

@SuppressWarnings({"all"})
public class HashSet01 {
    public static void main(String[] args) {
        HashSet set = new HashSet();

        //说明 在执行add方法后 会返回一个Boolean值
        System.out.println(set.add("john")); //T
        System.out.println(set.add("lucy")); //T
        System.out.println(set.add("john")); //F
        System.out.println(set.add("jack")); //T
        System.out.println(set.add("Rose")); //T

        //指定删除某个对象
        set.remove("john");
        System.out.println("set=" + set); //输出顺序不保证

        //set指向一个新的hashSet 置空了
        set = new HashSet();
        System.out.println("set=" + set);
        //HashSet不能添加相同的元素
        set.add("lucy"); //添加成功
        set.add("lucy"); //添加不了
        set.add(new Dog("tom")); //不同的狗 只是名字相同
        set.add(new Dog("tom")); //都可以存入
        System.out.println("set=" + set);

        //加深 经典面试题 看源码 做分析
        set.add(new String("hsp")); //ok
        set.add(new String("hsp")); //加入不了
        System.out.println("set=" + set);
        //观察源码 到底发生了什么  底层机制

    }
}


class Dog{
    private String name;

    public Dog(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                '}';
    }
}